import { CHANGE_INPUTVALUE,ADD_TO_DATA,DEL_TO_DATA } from './actionType';

//1.定义默认的状态数据
const defaultState = {
    inputVal: '',
    data: [
        '尝遍人间甘辛味，言外冷暖我自知',
        '一切安乐，无不来自困苦',
        '如果脏了还用，就莫不如一开始就用带颜色的。白的就要纯白才行',
        '君といると、月が绮丽です',
        '得来不易的机会，会让所有的动物去做原来不喜欢做的事',
    ]
}


// 2.导出一个返回状态数据的函数
// 该函数有两个参数：state/action
export default (state = defaultState,action) => {
    // reducer 只能接收和返回新的state,不能直接更改state,所以需要对state进行深拷贝
    // 到这里其实 newState与state(最开始默认的defaultState)并无关系，
    // 往后所有操作都是操作newState，显然，此时defaultState只是一个摆设
    let newState = JSON.parse(JSON.stringify(state));

    //reducer接收到一个事件，先判断不同的类型
    switch (action.type) {
        case CHANGE_INPUTVALUE:
            newState.inputVal = action.value 
            break;
        case ADD_TO_DATA:
            newState.data.push(newState.inputVal);
            newState.inputVal = '';
            break;
        case DEL_TO_DATA:
            newState.data.splice(action.value,1);
            break;    
        default:
            break;
    }
    // 始终返回的都是深拷贝的newState
    return newState;
}


